package 数据结构.栈和队列.Algorithm;

import java.net.Inet4Address;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

//利用队列实现栈
//利用两个队列去实现【先从队列1去添加
//wrong:不能这样子干
public class MyStack {
    //定义队列
    Queue<Integer> queue1;
    Queue<Integer> queue2;


    public MyStack() {
        queue1 = new LinkedList<>();
        queue2 = new LinkedList<>();
    }
//队列的offer和add方法是将元素放进队尾
    public void push(int x) {
        //这个先添加进队列【头
        queue2.add(x);
        while (!queue1.isEmpty()) {
            //依次将队列1的元素加进队尾
            //所以这里就实现了后进先出【即后进的已经在第一步就加进去了】
            queue2.offer(queue1.poll());
        }
        Queue<Integer> queueTemp;
        queueTemp = queue1;
        queue1 = queue2;
        queue2 = queueTemp;
    }

    //移除并返回栈顶元素。
    public int pop() {
        return queue1.poll();
    }

    //int top() 返回栈顶元素
    public int top() {
        return queue1.peek();
    }

    public boolean empty() {
        return queue1.isEmpty();
    }
}

